#ifndef WEATHERTOOL_H
#define WEATHERTOOL_H

#include <QJsonDocument>
#include <QJsonParseError>
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>
#include <map>
#include <QFile>
#include <QCoreApplication>//当前目录的获取
//#include <utility>

class WeatherTool
{
private:
    std::map<QString,QString> m_mapCity2Code;
public:
    WeatherTool()
    {
        //拿到我们的应用程序的路径
        QString fileName = QCoreApplication::applicationDirPath();//可执行文件的所在相对路径
        //可以放到项目的资源文件下，但无法获取到数据更新，所以通过这个方式获取到文件
        fileName += "/citycode-2019-08-23.json";
        QFile file(fileName);
        file.open(QIODevice::ReadOnly|QIODevice::Text);//用只读的方式去读和用文本的方式去读
        QByteArray json = file.readAll();//从文件里面读个json出来
        file.close();
        QJsonParseError err;//类用于报告JSON解析过程中的错误
        QJsonDocument jsonDoc = QJsonDocument::fromJson(json,&err);//读取和写入JSON
        QJsonArray citys = jsonDoc.array();
        for(int i = 0;i < citys.size(); i++)
        {
            QString code = citys.at(i).toObject().value("city_code").toString();
            QString city = citys.at(i).toObject().value("city_name").toString();
            if(code.size()>0)
            {
                m_mapCity2Code.insert(std::pair<QString,QString> (city,code));
            }
        }
    }

    QString operator[](const QString& city)
    {
        std::map<QString,QString>::iterator it=m_mapCity2Code.find(city);
        if(it == m_mapCity2Code.end())
        {
            it = m_mapCity2Code.find(city+u8"市区");
        }
        if(it != m_mapCity2Code.end())
        {
            return it->second;
        }
        return "000000000";
    }


};

#endif // WEATHERTOOL_H
